import QtQuick 1.1
import com.nokia.symbian 1.1

import "filtro.js" as Filtro
import "../cores.js" as Cores

Page {
    tools: ToolBarLayout {
        ToolButton {
            flat: true
            iconSource: "toolbar-back"
            onClicked: {
                lstTiposFiltros.atualizarFiltros();
                pageStack.pop().destroy(500);
            }
        }
        ToolButton {
            flat: true
            iconSource: "toolbar-delete"
            onClicked: {
                lstTiposFiltros.limparFiltros();
            }
        }
    }

    Component.onCompleted: {
        lstTiposFiltros.carregarFiltrosSalvos();
    }

    Rectangle {
        id: rectOpcoes
        height: 80
        anchors { left: parent.left; top: parent.top; right: parent.right }
        color: platformStyle.colorNormalDark

        TabBarLayout {
            anchors.fill: parent

            TabButton {
                text: "Estado"
                onClicked: lstTiposFiltros.currentIndex = 0;
            }

            TabButton {
                text: "Cidade"
                onClicked: lstTiposFiltros.currentIndex = 1;
            }

            TabButton {
                text: "Empresa"
                onClicked: lstTiposFiltros.currentIndex = 2;
            }
        }
    }

    VisualItemModel {
        id: filtros

        FlickFiltro {
            id: filtroPorEstado
            width: lstTiposFiltros.width; height: lstTiposFiltros.height
            nomeComponente: "FiltroItemPorEstado.qml"
        }

        FlickFiltro {
            id: filtroPorCidade
            width: lstTiposFiltros.width; height: lstTiposFiltros.height
            nomeComponente: "FiltroItemPorCidade.qml"
        }

        FlickFiltro {
            id: filtroPorEmpresa
            width: lstTiposFiltros.width; height: lstTiposFiltros.height
            nomeComponente: "FiltroItemPorEmpresa.qml"
        }
    }

    ListView {
        id: lstTiposFiltros
        model: filtros
        orientation: ListView.Horizontal
        anchors { left: parent.left; top: rectOpcoes.bottom; right: parent.right; bottom: parent.bottom }
        interactive: false

        function carregarFiltrosSalvos() {
            for (var i = 0; i < Filtro.filtros.length; i++) {
                var tipo = Filtro.filtros[i][0];
                var sinal = Filtro.filtros[i][1];
                var valor = Filtro.filtros[i][2];
                var juncao = Filtro.filtros[i][3];
                var componente;
                if (tipo == "estado")
                    componente = filtroPorEstado.adicionarItemFiltro();
                else if (tipo == "cidade")
                    componente = filtroPorCidade.adicionarItemFiltro();
                else if (tipo == "empresa")
                    componente = filtroPorEmpresa.adicionarItemFiltro();
                componente.sinal.valor = sinal;
                componente.valor = valor;
                componente.juncao.valor = juncao;
            }
        }

        function atualizarFiltros() {
            Filtro.limparFiltros();
            var fEstados = filtroPorEstado.retornarFiltro();
            var fCidades = filtroPorCidade.retornarFiltro();
            var fEmpresas = filtroPorEmpresa.retornarFiltro();            
            popularFiltros(fEstados);
            popularFiltros(fCidades);
            popularFiltros(fEmpresas);
            dadoProxy.Filtrar(Filtro.filtros);
        }

        function limparFiltros() {
            filtroPorEstado.limparFiltros();
            filtroPorCidade.limparFiltros();
            filtroPorEmpresa.limparFiltros();
            Filtro.limparFiltros();
        }

        function popularFiltros(filtro) {
            for (var i = 0; i < filtro.length; i++) {
                var item = filtro[i];
                Filtro.adicionarFiltro(item[0], item[1], item[2], item[3]);
            }
        }
    }
}
